package hw20190215;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
import java.util.zip.DataFormatException;

    public class HomeWork20190215 {
        public static void main(String[]args){
            test04();

        }

        /**
         * 第四题：巴黎时间比北京时间晚7小时，纽约时间比北京时间晚12小时，
         *        试编写一程序，根据输入的北京时间输出相应的巴黎和纽约时间
         */
    private static void test04(){
        //使用Scanner输入一个日期字符串
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个北京时间的字符串（格式如：15：30：45）：");
        String strBjTime=sc.nextLine(); //nextLine:输一行
        //将时间字符串转化为datetime类型
        Date bjDate=convertString2Date(strBjTime,"HH:mm:ss");
        //将其转化为巴黎和纽约时间
        Calendar bjCalendar=Calendar.getInstance();
        bjCalendar.setTime(bjDate);
        //获得日期的各个参数
        //转换为巴黎时间
        bjCalendar.add(Calendar.HOUR,7);
        //输出巴黎时间
        System.out.println(convertDate2String(bjCalendar.getTime(),"HH:mm:ss"));

        //将其转化为巴黎和纽约时间
        Calendar nyCalendar=Calendar.getInstance();
        nyCalendar.setTime(bjDate);

        //获得日期的各个参数
        //转换为巴黎时间
        nyCalendar.add(Calendar.HOUR,12);

        //输出巴黎时间
        System.out.println(convertDate2String(nyCalendar.getTime(),"HH:mm:ss"));

    }

    /**
     * 将字符串类型的日期转换为日期对象
     *
     * @param strDate 字符串类型的日期
     * @param pattern 字符串的格式
     * @return 日期对象
     */
    private static Date convertString2Date(String strDate, String pattern) {
        // 返回值:默认值为null
        Date date = null;
        if (pattern == null) {
            // 给定一个默认的转换格式
            pattern = "yyyy-MM-dd HH:mm:ss";
        }

        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        // 进行转换操作
        try {
            date = sdf.parse(strDate);
        } catch (Exception e) {
            // 如果发生异常，此处进行异常的日志记录
            System.out.println("日期转换发生了问题");
        }
        return date;

    }

    /**
     * 将日期对象转换为指定格式的日期字符串
     *
     * @param date 被转换的日期对象
     * @param pattern 字符串的转换格式
     * @return 指定格式的日期字符串
     */
    private static String convertDate2String(Date date, String pattern) {
        // 返回值:默认值为""
        String strDate = "";
        if (pattern == null) {
            // 给定一个默认的转换格式
            pattern = "yyyy-MM-dd HH:mm:ss";
        }

        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        // 进行转换操作
        strDate = sdf.format(date);
        return strDate;
    }
}
